//
//  ZYSignalExceptionHandler.h
//  ZYWebImage
//
//  Created by wangzhipan on 2025/5/3.
//  处理信号崩溃

#import <Foundation/Foundation.h>

/*
 - Unix 信号是一种软件中断，当特定事件发生时（如段错误、浮点异常等），操作系统会向进程发送信号
 - 进程可以通过 sigaction 函数注册自定义的信号处理函数
 - 当信号发生时，操作系统会暂停进程的正常执行，调用注册的处理函数
 
 
 信号是操作系统向进程发送的通知，用于指示发生了重要事件。当程序出现异常情况（如访问非法内存、除零等）时，操作系统会向进程发送相应的信号。常见的崩溃信号包括：

 - SIGABRT ：程序主动调用 abort() 函数终止
 - SIGSEGV ：段错误，访问无效内存地址
 - SIGBUS ：总线错误，通常是内存对齐问题
 - SIGILL ：非法指令
 - SIGFPE ：浮点异常

 应用程序可以通过 sigaction() 函数为特定信号注册自定义处理函数，替代默认的终止行为:
 struct sigaction sa;
 memset(&sa, 0, sizeof(struct sigaction));
 sa.__sigaction_u.__sa_sigaction = handleSignal;  // 自定义处理函数
 sa.sa_flags = SA_SIGINFO;  // 使用带有详细信息的处理函数
 sigemptyset(&sa.sa_mask);  // 初始化信号掩码

 // 注册处理函数
 sigaction(SIGSEGV, &sa, &oldHandler);  // 同时保存原处理器
 */

NS_ASSUME_NONNULL_BEGIN

@interface ZYSignalExceptionHandler : NSObject
- (BOOL)install;
- (void)uninstall;
@end

NS_ASSUME_NONNULL_END
